DNS隧道绕过校园网认证 |
您所在的位置:网站首页 › dns 伪装 › DNS隧道绕过校园网认证 |
本文在绝大数人眼里或许是篇福利文;在此文中介绍如何通过 DNS TUNNEL 的方式来绕过校园网认证,实现免认证免费上网;或许此招式并不是最优解,但对于绝大多数校园认证网确实能够成功实现。 怎么说呢!其实我早盯上了校园网了。 场景分析 / Scene Analysis吐槽在某所高校中,存在一家网络运营商,主要面向毫无收入的学生们,为我们提供日常上网冲浪。 其特点就是三字:贵、差、抠。每月79RMB的高昂费用;网络质量差,打游戏经常460;还只让三个设备使用。 没办法,我虽不用此校园网,但还是看不下去,遂有了本文。 信息收集在这所高校的网络中,统一使用的是 WiFi 热点客户端认证方式;当连上 WiFi 后,本机会向 DHCP 服务器获取一个内网 IP;关于这个 IP 地址,起初还让我很是疑惑,没想到在资源如此匮乏的大天朝,此运营商还会分一个公网 IP 给俺; 后来才知道这是个保留地址,详见其 维基百科 。 Address block Scope Description 100.64.0.0/10 私有网络 共享地址空间在未认证前还会弹出一个下载认证客户端软件的页面,这里所用到的恶心技术就是利用 HTTP 协议的缺陷,当我们访问一个 HTTP 的网站时,网关会对这个响应报文劫持篡改,给我们302重定向到一个指定的下载认证客户端页面。而当我们打开一个 HTTPS 类型的网站是不可能被劫持的。 上图就是重定向后的客户端下载页面,让我匪夷所思的是最上面的那个位置本该是一个域名,为何是个公网 IP。既然没有使用域名,那何必需要 DNS,何不直接关闭53端口,为何让我如此这般有机可乘;实在让我百思不得其解🤔。 由下图可得知,DNS 53端口是开启的。 原理其实很简单。由上述信息得知,校园网认证过程一般需要放行 DNS 和 DHCP 报文,也就是53和67/68端口。53端口既可以是 UDP,也可是 TCP;67/68端口走的是 UDP 传输协议。 本文着重点是 DNS 53端口,其实 UDP 67也可以绕过认证;但本文将围绕 DNS 53来实现绕过认证,不讨论后者。 而在这个53端口中,网关/防火墙如果不进行报文检查,那么就也将意味着,任何数据包都可以通过此端口传输;如果真的是这样的话,那就很简单了,直接 openVPN 架起,详见此文 利用openVPN实现udp53,67,68端口绕过校园网认证上网 。 但是,恰巧不幸的是,这种情况是很少存在的,也就是说53端口仅只允许 DNS 报文通过。如果是这种情况,还是有办法的。办法就是,使用 DNS 隧道。 简单来讲,既然53端口的 DNS 数据包可以通过网关/防火墙,那么就可以在本机运行一个程序,用来将其他端口数据包伪装成 DNS 数据包,发送到本地 DNS 服务器,这样网关/防火墙也不会进行拦截。但是这样仅只是将数据发送出去,如何回来呢?回来需要两个东西,一个是 VPS ,另一个就是域名。还得在域名购买商那里做如下解析设置: 主机记录 类型 值 NS d2t tunnel.0xf4n9x.com A tunnel 47.73.228.119以上,d2t 和 tunnel 可以随意命名;另外,VPS 公网 IP 为47.73.228.119。还有一点就是 VPS 是某马家的学生云,在此文发布之后,或可能未续费而停掉。意思就是说,不要想着搞我服务器了,虽然公网 IP 暴露了。 然后步入正题做个假设,我们在本机 PC 上将数据包伪装成 DNS 数据,且向本地 DNS 服务器指定将要查询一个域名,而本地域名服务器收到数据后,并不能成功解析,便只能将此数据包进行转发,转发到哪里呢?请注意上表中的 NS 记录,就是用来指定一个域名由 VPS 来进行解析;所以毫无疑问,数据包顺利地到达服务器。接下来我们同样可以在 VPS 上运行一个同样的程序,用来对伪装的数据包来进行还原,然后再将还原的数据包发送到互联网中。再然后服务器就会收到回来的响应数据包,再对此响应包进行 伪装成 DNS 响应数据包,按照过来的路径,反向地将伪装好的 DNS 响应数据包发送到本机 PC,PC 收到 DNS 伪装响应包后,再对其进行还原,最终达到本机 PC 收到真正需要的数据包。 前面谈原理的时候,说到需要一个对数据包做 DNS 伪装的程序。而这个实现这种功能的程序有很多。 就拿我用过的两款软件来说,第一个是 dns2tcp,第二个,也就是要说的主角就是 iodine。由于前者相较于后者较复杂,使用未成功,故弃之,主要说后者。 这个小工具可以通过 DNS 服务器对 IPv4 数据进行隧道传输。有时候防火墙禁止了其他类型的流量时,而 DNS 查询流量却未被禁用时,此时就可以用来传输正常 IPv4 流量。 这个工具其实是攻击者用来通过 DNS 隧道来反弹 shell 滴,不过我是拿来突破校园网认证。 Github:https://github.com/yarrick/iodine 服务器由于是 Debian 系,所以安装特简单。 1$ sudo apt-get install iodine然后运行起来 1$ sudo iodined -f -c -P password 10.0.0.1 d2t.0xf4n9x.com参数解释: 123-f 前台运行-c 禁用检查所有传入请求的客户端IP地址;默认情况,来自不匹配IP请求将被拒绝。-P 设置认证密码后面那个 IP 得是一个保留地址,再然后跟一个所要查询的域名。就这样让程序在 VPS 后台运行着。 客户端同样是 Debian 系,安装方法同样。 1$ sudo apt-get install iodine然后运行着,不要停止。 1$ sudo iodine -f -P password d2t.0xf4n9x.com再然后,通过 ssh 服务器,使用9999端口来作为转发端口。 1ssh [email protected] -D 9999不用很久,就会登录到服务器。 当出现上图标记的那段文字,即为成功。 代理开启系统自带代理 或者使用浏览器插件 SwitchyOmega(墙裂推荐) Github:github.com/FelisCatus/SwitchyOmega 代理服务器即本机,端口9999。 测试我绕过认证次数总共两次,第一次是在凌晨接近2点左右,那时候网速还行;而第二次在在写这篇文章的白天下午,速度是出了奇的慢,打开个百度将近十秒钟。 另外,也和我的 VPS 出口带宽有莫大的关系;毕竟只有1Mbps。 未遵循标准的结果TCP/IP 四层体系结构已明确规定各个协议的作用,如果非要在不该传输正常数据的端口中传输一切数据,那结果也可想而知。 Reference UDP 53 免费上网、DNS 隧道经验谈 利用openVPN实现udp53,67,68端口绕过校园网认证上网 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |